<?php

/**
 * FerramentasDao
 *
 * Classe modelo DAO para representar as acoes de uma Ferramenta
 */
class FerramentasDao extends Dao {

    public function injectDependencies() {

    }

    /**
     * @method  findAll
     *
     * Cria uma lista de todas as ferramentas do sistema.
     *
     * @return  array
     * @author  Richard Brandao
     * @since   2011-11-01
     */
    public function findAll() {
        $this->initConnection();
        $StSql = TQuery::getSqlListarFerramentas();
        $tQuery = $this->tMysqli->exec($StSql);
        $ArFerramentas = array();
        while( $ArFerramenta = mysqli_fetch_assoc($tQuery) ) {
            $ArFerramentas[] = new Ferramenta($ArFerramenta, $this->tMysqli);
        }
        $this->closeConnection();
        return $ArFerramentas;
    }

    /**
     * @method  updateEnabledTools
     *
     * Atualiza os status das ferramentas do usuario logado.
     *
     * @param   array       $ArFerramentasHabilitadas
     *
     * @return  boolean
     * @author  Richard Brandao     <richardsbrandao@gmail.com>
     * @since   2011-11-21
     */
    public function updateEnabledTools($ArFerramentasHabilitadas) {
        $Usuario = Dracosys::getLoggedUser();
        $Usuario->tMysqli->getConnection(MYSQL_HOST, MYSQL_USER,MYSQL_PASS, MYSQL_DB);
        $Usuario->tMysqli->escape($ArFerramentasHabilitadas);
        $Usuario->tMysqli->beginTransaction();
        $Usuario->updateTools($ArFerramentasHabilitadas, FerramentaService::getInstance('FerramentaService'));
        $Usuario->tMysqli->endTransaction();
        $BoRetorno = $Usuario->tMysqli->lastTransactionReturn();;
        $Usuario->tMysqli->close();
        if($BoRetorno) {
            Dracosys::saveSessionValue(SESSION_SYSTEM, 'Usuario', $Usuario);
        }
        return $BoRetorno;
    }

    /**
     * @method  enableTool
     *
     * Habilita uma ferramenta do usuario
     *
     * @param int   $IDFerramenta   Id da ferramenta que sera habilitada
     * @param int   $IDUsuario      Id do usuario que tera a ferramenta habilitada
     * @param Db  $tMysqli        Instancia do banco de dados conectada
     *
     * @author  Richard Brandao <richardsbrandao@gmail.com>
     * @since   2011-12-25
     */
    public function enableTool($IDFerramenta, $IDUsuario, &$tMysqli) {
        $StSql = TQuery::getSqlEnableTool($IDUsuario, $IDFerramenta);
        $tMysqli->escape($IDFerramenta);
        $tMysqli->escape($IDUsuario);
        $tMysqli->exec($StSql);
        return $tMysqli->lastQueryReturn();
    }
    /**
     * @method  disableTool
     *
     * Desabilita uma ferramenta do usuario
     *
     * @param int   $IDFerramenta   Id da ferramenta que sera habilitada
     * @param int   $IDUsuario      Id do usuario que tera a ferramenta habilitada
     * @param Db  $tMysqli        Instancia do banco de dados conectada
     *
     * @author  Richard Brandao     <richardsbrandao@gmail.com>
     * @since   2011-12-25
     */
    public function disableTool($IDFerramenta, $IDUsuario, &$tMysqli) {
        $StSql = TQuery::getSqlDisableTool($IDUsuario, $IDFerramenta);
        $tMysqli->escape($IDFerramenta);
        $tMysqli->escape($IDUsuario);
        $tMysqli->exec($StSql);
        return $tMysqli->lastQueryReturn();
    }
}

?>
